// 表格通用混入
export default {
  data() {
    return {
      columns: [],
      data: [],
      page: {
        pageNum: 1,
        pageSize: 20,
        total: 0
      },
      isExpand: false, // 是否展开筛选
      // 搜索字段集合
      searchKey: '', // 模糊查询字段
      initSearch: {}, // search值记录
      search: {}, // 展开搜索字段（外部覆盖）
      searchFilter: {} // 表头筛选字段（外部覆盖）
    }
  },
  computed: {
    // 最终用到的搜索值
    searchValue() {
      const result = this.isExpand
        ? { ...this.searchFilter, ...this.search }
        : { ...this.searchFilter, searchKey: this.searchKey }
      result.pageNum = this.page.pageNum
      result.pageSize = this.page.pageSize
      return result
    }
  },
  methods: {
    // 表格查询方法（外部覆盖）
    queryTable() {},
    // 分页变化
    handlePage(page) {
      this.page = page
      this.queryTable()
    },
    // 重置查询
    handleReset() {
      this.search = JSON.parse(JSON.stringify(this.initSearch))
      this.resetTable()
    },
    // 查询按钮点击查询或模糊搜索框点击查询
    handleSearch(val) {
      if (typeof val === 'string') this.searchKey = val
      this.resetTable()
    },
    // 表格重置
    resetTable() {
      this.page.pageNum = 1
      this.queryTable()
    }
  },
  created() {
    this.initSearch = JSON.parse(JSON.stringify(this.search))
  }
}
